<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
	<title>数据选择</title>
	<%--<meta name="decorator" content="blank"/>--%>
</head>
<body>
	<div style="position:absolute;right:8px;top:5px;cursor:pointer;" onclick="searchTag();">
		<i class="layui-icon">&#xe615;</i><%--<label id="txt">搜索</label>--%>
	</div>
	<div class="form-search hide" style="padding:10px 0 0 13px; display: none;" id="search" >
		<label for="key" class="control-label" style="padding:5px 5px 3px 0;">关键字：</label>
		<input type="text" class="empty" id="key" name="key" maxlength="50" style="width:110px;">
		<button class="btn" id="btn" onclick="searchNode()">搜索</button>
	</div>
	<div id="tree" class="ztree" style="padding:15px 20px;"></div>

</body>
<myfooter>
	<script type="text/javascript">
        var key,
			lastValue = "",
			nodeList = [],
			type = getQueryString("type", "${url}");
        var tree,
			setting = {
				view:{selectedMulti:false,dblClickExpand:false},
				check:{enable:"${checked}",nocheckInherit:true},
				async:{enable:(type==3),url:"${ctx}/sys/user/treeData",autoParam:["id=officeId"]},
				data:{
					simpleData:{enable:true}},
					callback:{
						<%--
						beforeClick: function(treeId, treeNode){
							if("${checked}" == "true"){
								//tree.checkNode(treeNode, !node.checked, true, true);
								tree.expandNode(treeNode, true, false, false);
							}
						}, --%>
						onClick:function(event, treeId, treeNode){
							tree.expandNode(treeNode);
						},
						onCheck: function(e, treeId, treeNode){
							var nodes = tree.getCheckedNodes(true);
							for (var i=0, l=nodes.length; i<l; i++) {
								tree.expandNode(nodes[i], true, false, false);
							}
							return false;
						},
						onAsyncSuccess: function(event, treeId, treeNode, msg){
							var nodes = tree.getNodesByParam("pId", treeNode.id, null);
							for (var i=0, l=nodes.length; i<l; i++) {
								try{tree.checkNode(nodes[i], treeNode.checked, true);}catch(e){}
								//tree.selectNode(nodes[i], false);
							}
							selectCheckNode();
						},
						onDblClick: function(){
							//<c:if test="${!checked}">
							top.$.jBox.getBox().find("button[value='ok']").trigger("click");
							//$("input[type='text']", top.mainFrame.document).focus();
							// </c:if>
						}
					}
			};
        function expandNodes(nodes) {
            if (!nodes) return;
            for (var i=0, l=nodes.length; i<l; i++) {
                tree.expandNode(nodes[i], true, false, false);
                if (nodes[i].isParent && nodes[i].zAsync) {
                    expandNodes(nodes[i].children);
                }
            }
        }
        $(document).ready(function(){
            $.get("${ctx}${url}${fn:indexOf(url,'?')==-1?'?':'&'}&extId=${extId}&isAll=${isAll}&module=${module}&t="
                + new Date().getTime(), function(zNodes){
                // 初始化树结构
                tree = $.fn.zTree.init($("#tree"), setting, zNodes);

                // 默认展开一级节点
                var nodes = tree.getNodesByParam("level", 0);
                for(var i=0; i<nodes.length; i++) {
                    tree.expandNode(nodes[i], true, false, false);
                }
                //异步加载子节点（加载用户）
                var nodesOne = tree.getNodesByParam("isParent", true);
                for(var j=0; j<nodesOne.length; j++) {
                    tree.reAsyncChildNodes(nodesOne[j],"!refresh",true);
                }
                selectCheckNode();
            });
            key = $("#key");
            key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
            key.bind('keydown', function (e){if(e.which == 13){searchNode();}});
            setTimeout("searchTag();", "300");


        });

        // 默认选择节点
        function selectCheckNode(){
            var ids = "${selectIds}".split(",");
            for(var i=0; i<ids.length; i++) {
                var node = tree.getNodeByParam("id", (type==3?"u_":"")+ids[i]);
                if("${checked}" == "true"){
                    try{tree.checkNode(node, true, true);}catch(e){}
                    tree.selectNode(node, false);
                }else{
                    tree.selectNode(node, true);
                }
            }
        }
        function focusKey(e) {
            if (key.hasClass("empty")) {
                key.removeClass("empty");
            }
        }
        function blurKey(e) {
            if (key.get(0).value === "") {
                key.addClass("empty");
            }
            searchNode(e);
        }

        //搜索节点
        function searchNode() {
            // 取得输入的关键字的值
            var value = $.trim(key.get(0).value);

            // 按名字查询
            var keyType = "name";<%--
			if (key.hasClass("empty")) {
				value = "";
			}--%>

            // 如果和上次一次，就退出不查了。
            if (lastValue === value) {
                return;
            }

            // 保存最后一次
            lastValue = value;

            var nodes = tree.getNodes();
            // 如果要查空字串，就退出不查了。
            if (value == "") {
                showAllNode(nodes);
                return;
            }
            hideAllNode(nodes);
            nodeList = tree.getNodesByParamFuzzy(keyType, value);
            updateNodes(nodeList);
        }

        //隐藏所有节点
        function hideAllNode(nodes){
            nodes = tree.transformToArray(nodes);
            for(var i=nodes.length-1; i>=0; i--) {
                tree.hideNode(nodes[i]);
            }
        }

        //显示所有节点
        function showAllNode(nodes){
            nodes = tree.transformToArray(nodes);
            for(var i=nodes.length-1; i>=0; i--) {
				/* if(!nodes[i].isParent){
				 tree.showNode(nodes[i]);
				 }else{ */
                if(nodes[i].getParentNode()!=null){
                    tree.expandNode(nodes[i],false,false,false,false);
                }else{
                    tree.expandNode(nodes[i],true,true,false,false);
                }
                tree.showNode(nodes[i]);
                showAllNode(nodes[i].children);
				/* } */
            }
        }

        //更新节点状态
        function updateNodes(nodeList) {
            tree.showNodes(nodeList);
            for(var i=0, l=nodeList.length; i<l; i++) {

                //展开当前节点的父节点
                tree.showNode(nodeList[i].getParentNode());
                //tree.expandNode(nodeList[i].getParentNode(), true, false, false);
                //显示展开符合条件节点的父节点
                while(nodeList[i].getParentNode()!=null){
                    tree.expandNode(nodeList[i].getParentNode(), true, false, false);
                    nodeList[i] = nodeList[i].getParentNode();
                    tree.showNode(nodeList[i].getParentNode());
                }
                //显示根节点
                tree.showNode(nodeList[i].getParentNode());
                //展开根节点
                tree.expandNode(nodeList[i].getParentNode(), true, false, false);
            }
        }

        // 开始搜索
        function searchTag() {
            $("#search").slideToggle(200);
            $("#txt").toggle();
            $("#key").focus();
        }

	</script>
</myfooter>